class Watcher {
  constructor(vm, key, cb) {
    this.vm = vm;
    this.key = key; //data中属性的名称
    this.cb = cb; //回调函数负责更新视图
    Dep.target = this; //把watcher对象记录到Dep类的静态属性target
    this.oldValue = vm[key]; //触发get方法，在get方法中调用addSub
    Dep.target = null; //清空Dep的target属性，避免重复添加
  }
  //当数据发生改变的时候更新视图
  update() {
    let newValue = this.vm[this.key];
    if(newValue === this.oldValue) return;
    this.cb(newValue)
  }
}